package cn.xiaolang.function.file_manage;

import java.io.File;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * nio的Path应用
 * 
 * @author fuhw
 * @date 2017年10月10日 下午5:13:00
 */
public class PathDemo {
	/**
	 * F://test-upload ==== 1.txt 2.txt temp F://test-upload/temp === 3.txt
	 * second F://test-upload/temp/second === 4.txt 5.txt
	 *
	 */
	public static void main(String[] args) {
		// 文件系统获取path
		Path path1 = FileSystems.getDefault().getPath("F://test-upload");
		System.err.println("1>> 文件名：" + path1.getFileName() + ",同级别目录下的文件数(含文件夹)：" + path1.getNameCount());

		Path path2 = new File("F://test-upload/temp/second").toPath();
		System.err.println("2>> 文件名：" + path2.getFileName() + ",同级别目录下的文件数(含文件夹)：" + path2.getNameCount());

		Path path3 = Paths.get("F://test-upload/temp");
		System.err.println("3>> 文件名：" + path3.getFileName() + ",同级别目录下的文件数(含文件夹)：" + path3.getNameCount());

		Path path4 = Paths.get("/folder1", "sub1");
		Path path5 = Paths.get("/folder2", "sub2");

		// resovle 字符串->Path路径 如： F://test-upload -> "1.txt" =>
		// F:\test-upload\1.txt
		System.err.println("resove 字符串拼接path路径 >>" + path3.resolve("1.txt").toFile().getAbsolutePath());
		// A-> F://test-upload/temp/second 相对 B-> F://test-upload 的路径 为：temp
		System.err.println("resolveSibling 解析A相对B的父目录>>" + path5.resolveSibling(path4).toFile().getAbsolutePath());
		// F://test-upload/temp/second 相对 F://test-upload/temp 的相对路径为：./second
		// 注：相对路径下的文件数不包含自身文件夹
		System.err.println("relative 当前路径相对给定的路径 ,同级别目录下的文件数:" + path2.relativize(path3).getNameCount());

	}
}
